//本文件存放组件的一些ts定义

import { CSSProperties, ReactNode } from "react";
import GLBModel from "./GLBModel";



/**展示3D模型的组件Props */
export interface ShowModelProps {
  /**要展示的模型的URL */
  url: string;
  /**组件最外层的style。在这里面指定宽高等。不指定宽高，将会适配父元素宽高 */
  style?: CSSProperties;
  /**工具栏的扩展render。参数是内部数据。返回一个JSX数组，用于扩展下拉栏。注意数组里的reactNode需要自己写key，否则build时会报错  */
  toolBarRender?: (instance: GLBModel) => ReactNode[];
  /**点击了下载的回调 */
  downloadCallback?: () => any
}

/**各个工具的开关和设置等，外部只读 */
export interface Setting {
  /**是否开启了骨架模式 */
  wireframe: boolean,
  /**是否开启了法线模式 */
  normal: boolean,
  /**是否开启了动画 */
  animation: boolean
  /**是否开启了坐标系 */
  axesHelper: boolean
  /**是否开启了网格 */
  gridHelper: boolean
  /**是否开启了包围盒 */
  boundingBoxHelper: boolean
  /**背景色，十六进制字符串 */
  bgcolor: string
}

/**失败的回调函数 */
export type OnErr = (e: any) => void